
import router, { asyncRoutes, constantRoutes } from './router/index.js'
import store from './store/index.js'
// 前置守卫，每一次跳转前
router.beforeEach(async(to, from, next) => {
  // to:要去的页面信息
  // to.path:要去页面路径
  // from:从哪个页面来的信息
  // from.paht:来的页面路径
  // next方法
  // next(),允许跳转,next('/路径')重定向其他页面去
  // 如果有token才能跳转
  // 加入白名单
  if (['/login', '/404', '/learn-form'].includes(to.path)) {
    return next()
  }
  if (store.state.user.token) {
    // 判断有没有用户信息，如果没有用户信息，才获取
    if (!store.state.user.userInfo.id) {
      // 调用 actions 发送请求
      // 完成菜单权限, 方式1 - 简单模式(不用vuex)
      const { roles: { menus }} = await store.dispatch('user/getInfo') // 关取menus的方式.从返向值获取
      /*
      // 获取menus数据,准备做菜单过滤
      const menus = store.state.user.userInfo.roles.menus
      const filterRoutes = asyncRoutes.filter(t => menus.includes(t.children[0].name))
      console.log('filterRoutes', filterRoutes)
      // 添加路由,通过路由aip方法添加

      router.addRoutes([...filterRoutes, { path: '*', redirect: '/404', hidden: true }])
      // 解决菜单没有显示
      router.options.routes = [...constantRoutes, ...filterRoutes]
      // 解决刷新报404的问题
      // 重新跳转一次+把484的路由配置放到最后面
      next(to.path)
      */
      // 完成菜单权限,方式2-标准模式(用vuex)
      // const menus = store.state.user.userInfo.roles.menus
      const filterRoutes = await store.dispatch('permission/filterRoutes', menus)
      // 添加路由,通过路由aip方法添加
      router.addRoutes([...filterRoutes, { path: '*', redirect: '/404', hidden: true }])
      // 解决菜单没有显示
      router.options.routes = [...constantRoutes, ...filterRoutes]
      // 解决刷新报404的问题
      // 重新跳转一次+把484的路由配置放到最后面
      next(to.path)
    }
    next()
  } else {
    next('/login')
  }
})
// 后置守卫,每一次跳转后
router.afterEach(route => {

})
